package plp.orientadaObjetos2.cabecalho;

import plp.orientadaObjetos2.cabecalho.imports.ListaImport;
import plp.orientadaObjetos2.cabecalho.pacote.DecPacote;
import plp.orientadaObjetos2.memoria.AmbienteCompilacaoOO2;

public class Cabecalho {

	private DecPacote pacote;
	private ListaImport listaImport;
	
	public Cabecalho(DecPacote pacote) {
		this.pacote = pacote;
	}
	
	public Cabecalho(DecPacote pacote, ListaImport listaImport){
		this(pacote);
		this.listaImport = listaImport;
	}
	
	
	
	public DecPacote getPacote() {
		return pacote;
	}

	public void setPacote(DecPacote pacote) {
		this.pacote = pacote;
	}

	public ListaImport getListaImport() {
		return listaImport;
	}

	public void setListaImport(ListaImport listaImport) {
		this.listaImport = listaImport;
	}

//	public AmbienteExecucaoOO2 elabora(AmbienteExecucaoOO2 ambiente){
//		if (length() == 1) {
//			DecClasseSimplesOO2 classe = (DecClasseSimplesOO2) getHead();
//			classe.elabora(ambiente);
//		} else {
//			DecClasseSimplesOO2 classe = (DecClasseSimplesOO2) getHead();
//			classe.elabora(ambiente);
//			((ListaDeclaracaoOO)getTail()).elabora(ambiente);
//		}
//		
//		return ambiente;
//	}
	
	public boolean checaTipo(AmbienteCompilacaoOO2 ambiente) {
		if(this.listaImport == null){
			return this.pacote.checarTipo(ambiente);
		} else{
			return this.pacote.checarTipo(ambiente) && this.listaImport.checarTipo(ambiente);
		}
	}
	
}